package br.com.tcc.service;

import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log;
import br.com.tcc.bma.BmaConfig;
import br.com.tcc.comunicacao.BmaServicoComunicao;

public class BmaServico extends Service implements Runnable, BmaServicoComunicao {
	private boolean isAtivo;
	private IBinder conexao = new BMAbinder();
	
	// Implementacao de IBinder, retorna nosso servico
	public class BMAbinder extends Binder {
		public BmaServicoComunicao getBMA() {
			// Retorna o servico SimplesBindService
			// Chamar os metodos do servico, ex: o isAtivo()
			return BmaServico.this;
		}
	}

	@Override
	public IBinder onBind(Intent arg0) {
		//Retorna o Binder para Activity utilizar
		return conexao;
	}
	
	@Override
	public void onCreate() {
		Log.i(BmaConfig.LOG_TAG, "BMAservico.onCreate()");
		isAtivo = true;
		// delega para uma thread
		new Thread(this).start();
	}
	
	@Override
	public void onStart(Intent intent, int startId) {
		Log.i(BmaConfig.LOG_TAG, "BMAservico.onStart()");
	}
	
	@Override
	public void onDestroy() {
		// ao encerrar o servico, altera o flag para a thread parar
		isAtivo = false;
		Log.i(BmaConfig.LOG_TAG, "BMAservico.onDestroy()");
	}
	
	@Override
	public void run() {
		while(isAtivo) {
			//fazAlgumaCoisa();
//			Log.i(BMAconfig.LOG_TAG, "ExemploServico executando... ");
		}
		
		Log.i(BmaConfig.LOG_TAG, "ExemploServico fim.");
		
		// Auto-Encerra o servico
		stopSelf();
		
	}

	@Override
	public boolean isAtivo() {
		// Retorna a informacao se esta ativo o servico
		return isAtivo;
	}
}
